package org.huang.rocketmq.demo.simple;

import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.common.message.Message;
import org.apache.rocketmq.remoting.common.RemotingHelper;
import org.huang.rocketmq.demo.Constant;

/**
 * @描述：SyncProducer类描述
 *
 *  同步发送消息:可靠的同步传输用于广泛的场景，如重要的通知消息，短信通知，短信营销系统等。
 *
 *
 * @作者: huanganwei
 * @创建时间: 2018-09-22 22:09:48
 * @版本: 1.0
 */
public class SyncProducer {

    public static void main(String[] args) throws Exception {
        //初始化一个提供者，给定一个group name
        DefaultMQProducer producer = new
                DefaultMQProducer("simple_msg_group");
        //指定连接的mq的nameserver地址
        producer.setNamesrvAddr(Constant.NAME_SERVER_ADDR);
        //开始启动这个提供者
        producer.start();
        for (int i = 0; i < 10; i++) {
            //创建一个消息，指定 topic，tag 和 message body（消息内容）
            Message msg = new Message("SimpleTopicTest" /* Topic */,
                    "TagA" /* Tag */,
                    ("Hello RocketMQ " +i).getBytes(RemotingHelper.DEFAULT_CHARSET) /* Message body */
            );
            //将消息发送到mq的brokers集群中的一个上面，并得到返回的结果信息。
            SendResult sendResult = producer.send(msg);
            System.out.printf("%s%n", sendResult);

            //以单向模式发送消息
            //producer.sendOneway(msg);
        }
        //当不再需要使用的时候关闭提供者实例
        producer.shutdown();
    }

}
